\section{Conclusions and Future Work}\label{sec:conclusions}

In this paper we present a system for optimal aggregation overlays. We identify
a relevant class of problems which includes an aggregation phase which is time
sensitive. We deduce that improving the time for aggregation improves the total
system latency, and this is doable by adjusting the fanout of the aggregation
overlay. We rigorously prove the optimal fanouts for several cases based
on a small amount of knowledge about the aggregation.

We experimentally show our
modeled optima to be very close to the values seen in practice using targeted
microbenchmarks and common aggregation functions on real world data.
On the real world data we saw a performance difference in excess of 600\%
between optimal and non-optimal fanouts, and we expect the difference to
grow as more leaves are added.
Especially since the aggregation phase takes a greater portion of the total
system time as work is parallelized across a greater number of leaves, this
represents a significant potential for optimization.

Our heuristics rely only upon the number of leaves and the
ratio of the output size of the aggregation to the input size, which is
provided up front. There are still a handful of cases for which the
optima remain unproven based on the execution time of the aggregation relative to
input size. Proving these cases will result in
two relevant variables which could be determined through experimentation and
interpolation without the need for human intervention. This will be
harder for cases when the growth factor changes between levels, but that may
provide more interesting results including a dynamic fanout.

The optimality of our system is dependent on homogeneity. This is practical in
many, but not all, cases. Moving forward we would like to be able to detect and
adapt to non-homogeneity, whether it is in hardware, aggregation performance, or
data distribution. This could result in an aggregation overlay which is
purposely unbalanced in terms of nodes in order to balance performance.

In addition, we are currently investigating optimizations for incremental and iterative computation.
